CoffeeScript
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
CoffeeScript est un langage de programmation, qui se compile en JavaScript. Le langage ajoute du sucre syntaxique inspiré par Python, Ruby et Haskellcite-ref-changelog-3-1[3] afin d'améliorer la brièveté et la lisibilité du JavaScript, tout en ajoutant des fonctionnalités comme le filtrage par motif ou les listes en compréhension.
Le résultat est compilé de façon prévisible en JavaScript, et les programmes peuvent être écrits avec moins de code (typiquement un tiers de lignes en moins) sans effet sur la vitesse d'exécutioncite-ref-6[6]. Depuis le 16 mars 2011, CoffeeScript est dans la liste des projets les plus populaires de GitHubcite-ref-7[7].
Le langage a une popularité relativement importante dans la communauté de Ruby. Le support de CoffeeScript est inclus dans la version 3.1 de Ruby on Railscite-ref-8[8]. De plus, Brendan Eich a cité CoffeeScript comme une influence sur son idée du futur du JavaScriptcite-ref-9[9]cite-ref-10[10]. En 2018, CoffeeScript est moins utilisé que dans les années précédentes, mais a largement contribué à l'évolution du langage JavaScript.
Contents
• Histoire
• Exemples
• Annexes
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Histoire
Le 13 décembre 2009, Jeremy Ashkenas a effectué le premier commit Git de CoffeeScript avec le commentaire : « initial commit of the mystery language » (« premier commit du langage mystère »)cite-ref-11[11]. Le compilateur était écrit en Ruby. Le 24 décembre 2009, il a publié la première version numérotée et documentée, la 0.1.0. Le 21 février 2010, la version 0.5 a été publiée, remplaçant le compilateur Ruby par un compilateur écrit en pur CoffeeScript. À ce moment, le projet a attiré plusieurs autres contributeurs sur GitHub, et les pages du site étaient vues plus de 300 fois par jour.[réf. souhaitée]
Exemples
Tests et compréhensions
Pour calculer l'IMC de Barry, joueur de basket amateur, on fait d'habitude quelque chose comme ceci (ici en JavaScript):
var masse = 72;
var taille = 1.86;
var IMC = masse/taille/taille;
if ((18.5 < IMC) && (IMC < 25)) {
alert('Barry a une corpulence normale');
}
CoffeeScript permet de combiner les deux tests en un seul:
masse = 72
taille = 1.78
IMC = masse/taille/taille
if 18.5<IMC<25 then alert 'Barry a une corpulence normale'
ou, plus naturellement pour qui est habitué à la langue anglaise,
masse = 72
taille = 1.78
IMC = masse/Math.pow taille, 2
alert 'Barry a une corpulence normale' if 18.5<IMC<25
Boucles et compréhensions
En général, l'implémentation de l'algorithme d'Euclide utilise une boucle tant que (ici, en Python) :
def pgcd(a, b):
x, y = a, b
while y > 0:
x, y = y, x % y
return x
C'est également possible en CoffeeScript; mais celui-ci possède également une boucle jusqu'à :
pgcd = (a,b) ->
[x,y] = [a,b]
[x,y] = [y,x%y] until y is 0
x
Une boucle for peut souvent être remplacée par une liste en compréhension. Par exemple, pour calculer les carrés des premiers nombres impairs (c'est-à-dire dont le reste modulo 2 vaut 1), on peut utiliser l'une des propositions suivantes :
Boucle classique
for n in [1..10]
if n%2 is 1 then alert n*n
Liste en compréhension
alert [n*n for n in [1..10] when n%2 is 1]
Avec un pas de 2
alert [n*n for n in [1..10] by 2]
Fonctions et jQuery
Le code JavaScript permettant d'initialiser la bibliothèque jQuery est :
$(document).ready(function() {
// Le code d'initialisation va ici
});
Ou, plus simplement :
$(function() {
// Le code d'initialisation va ici
});
$(document).ready ->
# Le code d'initialisation va ici
Ou bien :
$ ->
# Le code d'initialisation va ici
Compilation
Le compilateur CoffeeScript est écrit en CoffeeScript depuis la version 0.5 et est disponible en tant qu'utilitaire Node.js ; cependant, la base du compilateur ne nécessite pas Node.js et peut être utilisée dans n'importe quel environnement JavaScriptcite-ref-14[14]. Une des alternatives à l'utilitaire Node.js est Coffee Maven Plugin, un plugin pour le moteur de production Apache Maven. Ce plugin utilise Mozilla Rhino, un moteur JavaScript écrit en Java.
Le site officiel, CoffeeScript.org, dispose d'un bouton « Essayer CoffeeScript » dans la barre de navigation ; cliquer dessus ouvre une fenêtre modale qui permet d'entrer du code CoffeeScript, de voir le résultat en JavaScript, et de l'essayer directement dans le navigateur. Le site js2coffee propose une traduction bidirectionnelle.
Annexes
Articles connexes
Liens externes
• site-officielSite officiel
• (en) Dépôt GitHub
• (en) CoffeeScript Cookbook
• (en) The Little Book on CoffeeScript
• (en) Smooth CoffeeScript
Notes et références
cite-note-wikidata-8a46862771c9073d71b5485985192cedb12b4b77-11. « 2.7.0 », 24 avril 2022 (consulté le 9 août 2022)
cite-note-changelog-33. The Changelog. Épisode 0.2.9 - CoffeeScript with Jeremy Ashkenas « Copie archivée » (version du 22 juillet 2018 sur Internet Archive), Jul 23, 2010
cite-note-smell-43. heller2011martin-heller2011(en) Martin Heller, « Turn up your nose at Dart and smell the CoffeeScript », JavaWorld, InfoWorld, 18 octobre 2011 (lire en ligne, consulté le 9 février 2012)
cite-note-wikidata-126859c26edb20d85933f02deb358e1e75771575q124688-54. Black Duck Open Hub (site web), consulté le 18 juillet 2018.
cite-note-66. ↑ Read Write Hack. « Interview with Jeremy Ashkenas »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?) (consulté le 12 avril 2013), Jan 7, 2011
cite-note-77. ↑ Github. Popular Watched Repositories « Copie archivée » (version du 22 juillet 2018 sur Internet Archive)
cite-note-88. ↑ Peek, Joshua. Tweet by Rails Core Team Member on Apr 13, 2011
cite-note-99. ↑ Eich, Brendan. "Harmony of My Dreams"
cite-note-1010. ↑ Eich, Brendan. "My JSConf.US Presentation"
cite-note-1111. ↑ Github. 'initial commit of the mystery language'
cite-note-1414. ↑ « CoffeeScript », sur github.com via Internet Archive (consulté le 15 novembre 2023).
• Portail des logiciels libres
• Portail de la programmation informatique